package com.zh.test.util;

import java.util.LinkedList;
import java.util.List;

public class ComparteTo {


    public static void main(String[] args) {
        letterCasePermutation("ab");
    }

    public static List<String> letterCasePermutation(String S) {

        List<String> res = new LinkedList<String>();
        dfs("", S, res, 0);
        for (String str : res) {
            System.out.println(str);
        }
        return res;
    }

    public static void dfs(String pre, String S, List<String> res, int index) {

        // 判断结束的条件
        if (index == S.length()) {
            res.add(pre);
            return ;
        } else {
            char ch = S.charAt(index);
            // 指定这是一个字母
            if (!Character.isLetter(ch)) {
                dfs(pre + ch, S, res, index + 1);
            } else {
                // 转化为小写的
                ch = Character.toLowerCase(ch);
                dfs(pre + ch, S, res, index + 1);
                // 转化为大写的
                ch = Character.toUpperCase(ch);
                dfs(pre + ch, S, res, index + 1);
            }
        }
    }


}
